package com.hust.ele.controller;

import java.util.Date;

import javax.servlet.http.HttpServletRequest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.hust.ele.bean.User;
import com.hust.ele.service.UserService;

@Controller
@RequestMapping(value = "/user")
public class UserController {
	
	private static final Logger logger = LoggerFactory.getLogger(UserController.class);
	
	@Autowired
	UserService userService;
	
	/**
	 * @description 用户登录
	 * @author 周杨
	 * @Time 2018年10月25日 下午2:52:49
	 */
	@RequestMapping(value="login")
	public @ResponseBody int login(HttpServletRequest request,User user,ModelMap modelMap) {
		if(user==null||user.getLoginName()==null||user.getPassword()==null)
			return 0;//参数设置无效
		else{
			User u=this.userService.findUserByLoginName(user.getUserName());//默认策略优先去缓存里查找 
			if(u==null){//没有此用户存在
				return 1;
			}
			else{
				if(!u.getPassword().equals(user.getPassword())){
					return 2;//密码错误
				}
				else{
					logger.info("用户"+u.getLoginName()+"登录系统");
					modelMap.put("user",u);//置入user信息
					request.getSession().setAttribute("userId", u.getUserId());//取出放入session
					return 3;
				}
			}
		}
	}
	
	/**
	 * @description 用户注册
	 * @author 周杨
	 * @Time 2018年10月25日 下午2:52:40
	 */
	@RequestMapping(value="register")
	public @ResponseBody int register(User user) {
		if(user==null||user.getLoginName()==null
				||user.getLoginName()==null||user.getPassword()==null)
			return 0;
		else{
			Date now=new Date();
			user.setChangeTime(now);
			user.setCreateTime(now);
			user.setMemberLevel(1);//默认设为1级会员
			user.setStatus(1);//默认激活此用户
			this.userService.saveUser(user);
			logger.info("用户"+user.getUserName()+"注册成功！");
			return 1;
		}
	}
	
	/**
	 * @description Ajax校验登录名是否重复 (从缓存里读取)
	 * @return 0:重复 1:不重复
	 * @author 周杨
	 * @Time 2018年10月25日 下午2:10:49
	 */
	@RequestMapping(value="checkLoginName")
	public @ResponseBody int checkLoginName(@RequestParam String loginName) {
		User user=this.userService.findUserByLoginName(loginName);
		return user==null?0:1;
	}
	
	/**
	 * @description 用户注销
	 * @author 周杨
	 * @Time 2018年10月25日 下午2:10:49
	 * @goto 跳转到login
	 */
	@RequestMapping(value="logout")
	public String logout(HttpServletRequest request) {
		request.getSession().removeAttribute("userId");//移除session
		return "user/login";
	}
}
